--- 恒瑞雷达流量计 modbus 9600,N,8,1
module(..., package.seeall)

local logtag = "HR7360"
local dtu, udtu, addr= {}, {} , 1
function setDtu(_dtu, _udtu)
    dtu, udtu = _dtu, _udtu
    addr = udtu.addr and tonumber(udtu.addr) or 1
    sys.taskInit(init)
end
--[[ modbus  基地址：1000(0x03E8)
0	水量高16位
1	水量低16位
2	流量
3	水位
4	流速
7	电压
8	水位信号强度
9	流速信号强度
10	流速计角度
11	软件版本
12	地址 ]]
local function _pro(d)
    local _, m_val,m_ins,m_sw,m_ls = pack.unpack(d:sub(4, -3), ">IH3")
    local _1, m_vol = pack.unpack(d:sub(18, 19), ">H")
    m_ins = m_ins and m_ins/1000 --流量
    m_vol = m_vol and m_vol/10
    log.info(logtag,m_val,m_ins,m_sw,m_ls,m_vol)
    usrdata.update({m_val, m_ins,m_sw,m_ls,"sw:"..m_sw..",ls:"..m_ls})
    if lcd.LCD_DATA[3]:match('累计(.+)') then
        lcd.LCD_DATA[3] ='流量:' .. (m_ins or "NULL")
        return
    end
    lcd.LCD_DATA[3] ='累计:' .. (m_val or "NULL")
end
function init()
    sys.wait(200)
	while true do
        tools.modbus_send(3,addr,3,0x03e8,11)
        local result, data = sys.waitUntil("UART_READ_DONE_NEXT_3" , 5000)
        if result then
            if data then
                _pro(data)
            end
            sys.wait(5000)
        else
            lcd.LCD_DATA[3] = logtag.." READ TIMEOUT"
            --local str = "01030B".. "0098967F".."3039".."2B67".."56CE".."FFFFFFFF".."AD9C".."EEEE" --输出 9999999  12.345 11111 22222 44444
            --_pro(string.fromHex(str))
        end
	end
end
